package com.zcsy.manage.distribution.service.mall;

import java.util.List;
import java.util.Map;

import org.apache.poi.xssf.streaming.SXSSFWorkbook;

import com.zcsy.manage.model.dmall.vo.OrderDetailVo;
import com.zcsy.manage.model.dmall.vo.OrderInfoVo;
import com.zcsy.manage.model.mall.OrderInfo;

/**
 * 订单接口
 * @Title:CIOrderInfoService
 * @Package：  com.zcsy.manage.distribution.service.mall
 * @Description:订单服务接口
 * @author wangj
 * @date 2016年6月12日上午10:08:59
 * @version 1.0
 * @see JDK1.7.0_67
 * @Copyright: 2016 武汉恒数利通技术有限公司 All rights reserved.
 */
public interface CIOrderInfoService {
	
	/**
	 * 
	* @Title: selectByDate1 
	* @Description: 查询最近7天的配送数量 
	* @param map
	* @return 
	* @author wangj 1157360454@qq.com   
	* @date 2016年6月15日 
	* @throws
	 */
	List<Map<String, Object>> selectByDate1(Map<String, Object> map);
	
	/**
	 * 
	* @Title: selectOrderSender1 
	* @Description: 最近7天配送员的配送数据 
	* @param map
	* @return 
	* @author wangj 1157360454@qq.com   
	* @date 2016年6月15日 
	* @throws
	 */
	List<Map<String, Object>> selectOrderSender1(Map<String, Object> map);
	
	/**
	 * 
	* @Title: selectOrder2 
	* @Description: 根据条件查询已配送的订单 
	* @param map
	* @return 符合条件的订单
	* @author wangj 1157360454@qq.com   
	* @date 2016年6月15日 
	* @throws
	 */
	List<Map<String, Object>> selectOrder2(Map<String, Object> map);
	
	/**
	 * 
	* @Title: selectOrder0 
	* @Description: 根据条件查询订单 
	* @param map
	* @return 符合条件的订单
	* @author wangj 1157360454@qq.com   
	* @date 2016年6月14日 
	* @throws
	 */
	List<Map<String, Object>> selectOrder0(Map<String, Object> map);
	
	/**
	 * 
	* @Title: selectOrder1 
	* @Description: 根据条件查询还未配送的订单 
	* @param map
	* @return 
	* @author wangj 1157360454@qq.com   
	* @date 2016年6月14日 
	* @throws
	 */
	List<Map<String, Object>> selectOrder1(Map<String, Object> map);
	
	/**
	 * 本月已配送
	* @Title: selectMonth 
	* @Description: 本月已配送 
	* @param list 有权限的小区
	* @return 
	* @author wangj 1157360454@qq.com   
	* @date 2016年6月12日 
	* @throws
	 */
	int selectMonth(List<String> list);
	
	/**
	* @Title: selectWeek 
	* @Description:  本周已配送 
	* @param map
	* @return 
	* @author wangj 1157360454@qq.com   
	* @date 2016年6月12日 
	* @throws
	 */
	int selectWeek(String loginname,String startTime,String endTime );
	
	/**
	 * 
	* @Title: selectPeiSong 
	* @Description: 今日已配送 
	* @param loginname
	* @return 
	* @author wangj 1157360454@qq.com   
	* @date 2016年6月12日 
	* @throws
	 */
	int selectPeiSong(String loginname);
	
	/**
	 * 今日新增订单
	* @Title: selectToday 
	* @Description: 今日新增订单 
	* @param list
	* @return 
	* @author wangj 1157360454@qq.com   
	* @date 2016年6月12日 
	* @throws
	 */
	int selectToday(List<String> list);
	
	/**
	 * 
	* @Title: selectOrderDetailInfo 
	* @Description: 订单编号查询订单详情 
	* @param ordernumber 订单编号
	* @return 
	* @author wangj 1157360454@qq.com   
	* @date 2016年6月7日 
	* @throws
	 */
	List<OrderDetailVo> selectOrderDetailInfo(String ordernumber);
	
	/**
	 * 
	* @Title: selectOrderInfo 
	* @Description: 订单列表 
	* @param map
	* @return 
	* @author wangj 1157360454@qq.com   
	* @date 2016年6月6日 
	* @throws
	 */
	List<Map<String, Object>> selectOrderInfo(Map<String, Object> map);
	/**
	 * 
	* @Title: selectByDate 
	* @Description: 订单日期报表（非最近7天） 
	* @param map
	* @return 
	* @author wangj 1157360454@qq.com   
	* @date 2016年6月1日 
	* @throws
	 */
	List<Map<String, Object>> selectByDate(Map<String, Object> map);
	
	/**
	* @Title: assignOrder 
	* @Description: 抢单/派单 
	* @param orderInfo 订单信息
	* @return 
	* @author wangj 1157360454@qq.com   
	* @date 2016年5月30日 
	* @throws
	 */
	int assignOrder(OrderInfo orderInfo);
	
	/**
	 * 
	* @Title: selectOrderEmployee 
	* @Description: 配送员在某段时间内的配送数量 （非最进7天）
	* @param orderInfo
	* @return 
	* @author wangj 1157360454@qq.com   
	* @date 2016年5月25日 
	* @throws
	 */
	List<Map<String, Object>> selectOrderSender(Map<String, Object> map);

	/**
	 * 
	* @Title: updateState 
	* @Description:修改订单状态 
	* @param  oInfo 订单信息  
	* @return     
	* @throws
	 */
	int updateState(OrderInfo oInfo);
	
	/**
	 * 
	* @Title: selectByOrderNumber 
	* @Description: 订单号查询订单信息 
	* @param ordernumber	订单编号   
	* @return int    
	* @throws
	 */
	OrderInfo selectByOrderNumber(String ordernumber);

	/**
	 * 
	* @Title: selectOrder 
	* @Description: 根据输入条件查询订单 
	* @param orderInfo  条件集合  
	* @return List<OrderInfo>    
	* @throws
	 */
	List<OrderInfo> selectOrder(Map<String, Object> orderInfo);
	
	/**
	 * @Title: createOrderExcel  
	 * @Description: 生成订单报表
	 * @param orderInfo
	 * @return SXSSFWorkbook
	 * @throws
	 */
	public SXSSFWorkbook createOrderExcel(Map<String, Object> orderInfo);
	
	/**
	 * @Description 根据订单状态和派发人账号查询订单
	 * @param orderInfo 插入数据的订单对象
	 * @return 符合条件的订单列表
	 * @author liuying 1075817474@qq.com
	 * @date 2016年6月17日
	 * @see 
	 */
	List<OrderInfoVo> selectByStateAndSenderAccount(Map<String, Object> params);
	
	/**
	 * 获取配送首页的所有订单，尚无配送员的、有配送员且订单未完成、配送员是本人的
	 * @param senderAccount 配送员账号
	 * @return 返回对应的订单列表
	 * @author: zt
	 * @date: 2016年6月19日
	 */
	List<OrderInfoVo> selectAllOrderListForDistribution(Map<String, Object> params);
	
	/**
	 * 获取配送员可见的所有订单，尚无配送员的、有配送员且配送员是本人的
	 * @param senderAccount 配送员账号
	 * @return 返回对应的订单列表
	 * @author: zt
	 * @date: 2016年6月19日
	 */
	List<OrderInfoVo> selectAllWaitForDealOrderListForDistribution(Map<String, Object> params);
	
	/** 
	 * @Title: selectCounts 
	 * @Description: 获取各情况订单数
	 * @param @param params
	 * @param @return     
	 * @return int     
	 * @throws 
	 */
	public int selectCounts(Map<String, Object> params);
}
